import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
//  `defineStore()` 的返回值的命名是自由的
// 但最好含有 store 的名字，且以 `use` 开头，以 `Store` 结尾。
// (比如 `useUserStore`，`useCartStore`，`useProductStore`)
// 第一个参数是你的应用中 Store 的唯一 ID。
export const useUserStore = defineStore('user', () => {
    // 其他配置...
    const token = ref<string>('')
    const adminid = ref<string>('')
    const role = ref<number>(1)
    const adminname = ref<string>("")
    const checkedKeys = ref<string[]>([])
    //执行这个函数，本地数据库中的token变化，store中token也发生了变化
    const changeToken = (newTOken: string) => {
        token.value = newTOken
    }
    const changeAdminid = (newAdminid: string) => {
        adminid.value = newAdminid
    }
    const changeRole = (newRole: number) => {
        role.value = newRole
    }
      const changeCheckedKeys = (newCheckedKeys: string[]) => {
        checkedKeys.value = newCheckedKeys
    }
       const changeAdminname = (newAdminname: string) => {
        adminname.value = newAdminname
    }

    //登出
    const loginOut = () => {
        token.value = ''
        adminid.value = ''
    }
    //判断是否登录的函数
    const isLogin = computed<boolean>(() => token.value ? true : false);
    return {
        token,
        adminid,
        changeAdminid,
        changeToken,
        loginOut,
        isLogin,
        changeRole,
        changeAdminname,
        changeCheckedKeys,
        role,
        adminname,
        checkedKeys
    }
},
    {
        persist: true,
    },
)

